Introducing Merkle DAGs
「コンピュータ上でグラフを表現する場合、矢印を描く余裕はない。」
NodeとEdgeをつがい的に表現することでデータ構造をエンコードしなければならない
CIDはあるNodeから別のNodeへのEdgeを表現するのに使用可能
ノードの表現を2つの属性に単純化する
File name, File's contents
https://scrapbox.io/files/64a3927a519ff8001b589f44.png
Liaf nodeを作成し、階層内のファイルごとに1つのノードを作成し、それぞれ固有のCIDのlabelを付ける
https://scrapbox.io/files/64a392dfc52a5a001cc19bd4.png
Intermediate nodesのノード構造は少し異なる
各ノードにもディレクトリ名に対応する名前が含まれる
ディレクトリノードのContent: ファイルのコンテンツとディレクトリのリスト => CIDのリスト ディレクトリ名とノードのデータを構成し、再びCIDを導き出せる
https://scrapbox.io/files/64a393fcc978d1001c6d14d9.png
CID "baf...7"を持つNodeは、その子である"baf...4"と"baf...5"を自分に取り込んでいる
自分が思っていた方向と逆だったYudai.icon
これ仮にノードの追加(leaf node)する時って順番にしたから全てを更新しないといけないんだ
これがCIDのRoot hashが変わる理由か
一つ上のNodeは抽象的に表現される
https://scrapbox.io/files/64a3955917e6ac001cfa9b99.png